<!-- 左上角图表 -->
<template>
  <div class="left-top">
    <div ref="chartDom" id="chart-dom"></div>
  </div>
</template>

<script setup>
  import { debounce } from "@/utils/debounce";
  import { convertEchartsStyles } from "@/utils/convertEchartsStyles";
  import * as echarts from "echarts";
  import { ref, onMounted, onUnmounted } from "vue";
  const chartDom = ref(null);

  let chartResize = null; // 图表自适应函数
  onMounted(() => {
    const myChart = echarts.init(chartDom.value);
    const option = {
      tooltip: {
        trigger: "axis",
      },
      // legend: {
      //   data: ["Email", "Union Ads", "Video Ads", "Direct", "Search Engine"],
      // },
      grid: {
        left: "3%",
        right: "4%",
        bottom: "3%",
        top: "3%",
        containLabel: true,
      },
      toolbox: {
        feature: {
          saveAsImage: {},
        },
      },
      xAxis: {
        type: "category",
        boundaryGap: false,
        data: ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"],
      },
      yAxis: {
        type: "value",
      },
      series: [
        {
          name: "Email",
          type: "line",
          stack: "Total",
          data: [120, 132, 101, 134, 90, 230, 210],
        },
        {
          name: "Union Ads",
          type: "line",
          stack: "Total",
          data: [220, 182, 191, 234, 290, 330, 310],
        },
        {
          name: "Video Ads",
          type: "line",
          stack: "Total",
          data: [150, 232, 201, 154, 190, 330, 410],
        },
        {
          name: "Direct",
          type: "line",
          stack: "Total",
          data: [320, 332, 301, 334, 390, 330, 320],
        },
        {
          name: "Search Engine",
          type: "line",
          stack: "Total",
          data: [820, 932, 901, 934, 1290, 1330, 1320],
        },
      ],
    };
    convertEchartsStyles("chart-dom"); // 在图表加载后调用样式转换
    myChart.setOption(option);
    chartResize = debounce(myChart.resize, 520);
    window.addEventListener("resize", chartResize);
  });
  onUnmounted(() => {
    window.removeEventListener("resize", chartResize);
  });
</script>

<style lang="scss" scoped>
  .left-top {
    position: absolute;
    top: 20px;
    left: 20px;
    padding: 20px;
    width: 200px;
    height: 200px;
    background-color: rgba(0, 0, 0, 0.5);
    color: #fff;
    #chart-dom {
      width: 100%;
      height: 100%;
    }
  }
</style>
